package main

import "fmt"

type Queue []interface{}

func (q *Queue)Push(v interface{}){
	*q=append(*q,v.(int))
}

func (q *Queue)Pop()interface{}{
	head:=(*q)[0]
	*q=(*q)[1:]
	return head
}

func (q *Queue)IsEmpty()bool{
	return len(*q)==0
}

func main() {
	q:=Queue{1}
	q.Push(2)
	q.Push(3)
	fmt.Println(q)
	fmt.Println(q.Pop())
	fmt.Println(q)
}